package com.itlong.cloud.property.service;

import com.itlong.cloud.POJO.DTO.app.APPServiceGetRepairListDTO;
import com.itlong.cloud.POJO.DTO.app.APPServiceUploadRepairDTO;
import com.itlong.cloud.POJO.DTO.property.PropertyRepairGetRepairsByPageDTO;
import com.itlong.cloud.POJO.DTO.property.PropertyRepairHandleDTO;
import com.itlong.cloud.POJO.PO.RepairProcessPO;
import com.itlong.cloud.POJO.VO.app.AppRepairDetailVO;
import com.itlong.cloud.POJO.VO.property.PropertyRepairGetOneVO;
import com.itlong.cloud.POJO.VO.property.PropertyRepairGetRepairsByPageVO;
import com.itlong.cloud.utils.page.Page;

import java.util.List;

/**
 * <desc>
 *     物业-物业报修管理服务层接口
 * </desc>
 *
 * @createDate 2018/08/09
 */
public interface IPropertyRepairManageService {

    /**
     * <desc>
     *      提交物业报修申请
     * </desc>
     *
     * @param appServiceUploadRepairDTO 提交物业报修申请参数
     * @return 添加条数
     * @author wangzhi
     * @createDate 2018/08/09
     */
    Integer uploadRepair(APPServiceUploadRepairDTO appServiceUploadRepairDTO) throws Exception;

    /**
     * <desc>
     *      获取当天已有的流水号
     * </desc>
     *
     * @param timeNum 当天的时间
     * @return 流水号集合
     * @author wangzhi
     * @createDate 2018/08/10
     */
    List<String> getRepairNums(String timeNum) throws Exception;

    /**
     * <desc>
     *      获取我的物业报修数据
     * </desc>
     *
     * @param appServiceGetRepairListDTO 获取我的物业报修数据请求参数
     * @return 结果集
     * @author wangzhi
     * @createDate 2018/08/10
     */
    List<RepairProcessPO> getRepairList(APPServiceGetRepairListDTO appServiceGetRepairListDTO) throws Exception;

    /**
     * <desc>
     *      获取我的报修详情
     * </desc>
     *
     * @param messageId 报修数据id
     * @return 报修管理实体对象
     * @author wangzhi
     * @createDate 2018/08/10
     */
    AppRepairDetailVO getRepairDetail(String messageId) throws Exception;

    /**
     * <desc>
     *      操作报修数据
     * </desc>
     *
     * @param messageId 报修数据id
     * @param managerType 操作类型
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2018/08/13
     */
    Integer repairManager(String messageId, String managerType) throws Exception;

    /**
     * <desc>
     *      报修数据完成付款
     * </desc>
     *
     * @param feeId 缴费账单id
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2018/08/13
     */
    Integer completePay(String feeId) throws Exception;

    /**
     * <desc>
     *       分页获取报修管理信息，包含待受理、已受理、已完成、已取消
     * </desc>
     *
     * @param propertyRepairGetRepairsByPageDTO 查询参数
     * @return 分页数据
     * @author wangzhi
     * @createDate 2018/08/14
     */
    Page<PropertyRepairGetRepairsByPageVO> getRepairsByPage(PropertyRepairGetRepairsByPageDTO propertyRepairGetRepairsByPageDTO) throws Exception;

    /**
     * <desc>
     *      获取单个报修信息
     * </desc>
     *
     * @param repairId 报修id
     * @return 单个报修信息对象
     * @author wangzhi
     * @createDate 2018/08/14
     */
    PropertyRepairGetOneVO getOneRepair(String repairId);

    /**
     * <desc>
     *      待受理页面处理操作
     * </desc>
     *
     * @param propertyRepairHandleDTO 报修信息各流程处理DTO
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2018/08/15
     */
    Integer acceptRepair(PropertyRepairHandleDTO propertyRepairHandleDTO) throws Exception;

    /**
     * <desc>
     *      已受理页面撤销操作
     * </desc>
     *
     * @param propertyRepairHandleDTO 报修信息各流程处理DTO
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2018/08/15
     */
    Integer cancelRepair(PropertyRepairHandleDTO propertyRepairHandleDTO) throws Exception;

    /**
     * <desc>
     *      已受理页面完成操作
     * </desc>
     *
     * @param propertyRepairHandleDTO 报修信息各流程处理DTO
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2018/08/15
     */
    Integer completeRepair(PropertyRepairHandleDTO propertyRepairHandleDTO) throws Exception;

    /**
     * <desc>
     *      确认返修操作
     * </desc>
     *
     * @param propertyRepairHandleDTO 报修信息各流程处理DTO
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2018/08/15
     */
    Integer reworkRepair(PropertyRepairHandleDTO propertyRepairHandleDTO) throws Exception;

    /**
     * <desc>
     *      批量删除
     * </desc>
     *
     * @param repairIds 报修id，多个用英文","相连
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2018/08/15
     */
    Integer deleteRepairs(String repairIds) throws Exception;

    /**
     * <desc>
     *      依条件获取所有报修数据
     * </desc>
     *
     * @param propertyRepairGetRepairsByPageDTO 查询参数
     * @return 所有报修数据
     * @author wangzhi
     * @createDate 2018/08/16
     */
    List<PropertyRepairGetRepairsByPageVO> getAllRepairs(PropertyRepairGetRepairsByPageDTO propertyRepairGetRepairsByPageDTO) throws Exception;
}
